home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / ae / code / acp3.00 / mymenus.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-18  |  6.8 KB  |  228 lines

  1. #include <exec/types.h>
  2. #include <libraries/gadtools.h>
  3. #include <exec/memory.h>
  4. #include <clib/exec_protos.h>
  5. #include <clib/dos_protos.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <stdlib.h>
  9. #define TX(x) if(Buttons[x].Text[0]!='\0')
  10. extern struct NewMenu *EWinMenu;
  11. #define PX(x) if(Buttons[x].Text[0]!='\0' && Buttons[x].Type)
  12. static int MaxMenus=0;
  13. void MaddItem(UBYTE Type,char *Label,char *CommKey,UWORD Flags,LONG Mutual,APTR User);
  14. void CreateCustomMenus(int nodes);
  15. extern int BM[];
  16. extern char *MyVerStr;
  17. extern char *VerStr;
  18. struct BUTTON
  19. {
  20.   char Text[100];
  21.   char Command[100];
  22.   BOOL Type;
  23. } ;
  24. extern struct BUTTON Buttons[];
  25.   char chip Version[200];
  26. extern char *GetDate(void);
  27. int menuset = 0;
  28. void MaddRem(void);
  29. void MaddNodes(int nodes);
  30. void CreateCustomMenus(int nodes)
  31. {
  32.   int bt,nm;
  33.   int tempnodes;
  34.   int i;
  35.   tempnodes=nodes;
  36. (void)GetDate();
  37.   for(i=0;i<2;i++)
  38.   {
  39.    bt=0; nm=0;
  40.    menuset=i;
  41.    nodes=tempnodes; nodes--;
  42.   
  43.   MaddItem( NM_TITLE, "Project", 0 , 0, 0, (APTR)0);
  44.      MaddItem( NM_ITEM,  "About",0,0,0,(APTR)0);
  45.    strcpy(Version," AmiExpress Professional "); strcat(Version,&VerStr[6]);
  46.    MaddItem( NM_SUB,&Version,0,0,0,(APTR)0);
  47.    MaddItem( NM_SUB,"                Written by Joseph Hodge     ",0,0,0,(APTR)0);
  48.   
  49.      MaddItem( NM_ITEM,  "/X Technical", 0,0,0,(APTR)0);
  50.    MaddItem( NM_SUB,"                   AmiExpress Technical Support",0,0,0,(APTR)0);
  51.    MaddItem( NM_SUB,"   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ",0,0,0,(APTR)0);
  52.    MaddItem( NM_SUB,"        ByteMaster       ByteMaster's BBS USA     - 703-639-6114      ",0,0,0,(APTR)0);
  53.    MaddItem( NM_SUB,"                                                                    ",0,0,0,(APTR)0);
  54.    MaddItem( NM_ITEM,"/X Developement",0,0,0,(APTR)0);
  55.    MaddItem( NM_SUB,"    /X Developement Team   ",0,0,0,(APTR)0);
  56.    MaddItem( NM_SUB,"   ~~~~~~~~~~~~~~~~~~~~~~  ",0,0,0,(APTR)0);
  57.    MaddItem( NM_SUB,"   James E. Millsap        ",0,0,0,(APTR)0);
  58.    MaddItem( NM_SUB,"   Gregg Green             ",0,0,0,(APTR)0);;
  59.  
  60.    MaddItem( NM_ITEM,"/X Utility Developement",0,0,0,(APTR)0);                                                                   
  61.    MaddItem( NM_SUB,"    /X Utility Developement Team   ",0,0,0,(APTR)0);
  62.    MaddItem( NM_SUB,"   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ",0,0,0,(APTR)0);
  63.    MaddItem( NM_SUB,"   James E. Millsap                ",0,0,0,(APTR)0);
  64.  
  65.      MaddItem( NM_TITLE, "Master Control",0,0,0,(APTR)0);
  66. MaddItem(  NM_ITEM, "Sysop Login",0, 0, 0, (APTR)0);
  67.      MaddNodes(nodes);
  68.    MaddItem(  NM_ITEM, "Instant Login",0, 0, 0, (APTR)0);
  69.      MaddNodes(nodes);
  70. MaddItem(  NM_ITEM, "AEShell",0, 0, 0, (APTR)0);
  71.      MaddNodes(nodes);
  72. MaddItem(  NM_ITEM, "Toggle Chat",0, 0, 0, (APTR)0);
  73.      MaddNodes(nodes);
  74. MaddItem(  NM_ITEM, "Exit Node",0, 0, 0, (APTR)0);
  75.      MaddNodes(nodes);
  76. MaddItem(  NM_ITEM, "Local Login",0, 0, 0, (APTR)0);
  77.      MaddNodes(nodes);
  78. MaddItem(  NM_ITEM, "Reserve Node",0, 0, 0, (APTR)0);
  79.      MaddNodes(nodes);
  80. MaddItem(  NM_ITEM, "Accounts",0, 0, 0, (APTR)0);
  81.      MaddNodes(nodes);
  82. MaddItem(  NM_ITEM, "Init Modem",0, 0, 0, (APTR)0);
  83.      MaddNodes(nodes);
  84. MaddItem(  NM_ITEM, "Node(offhook)",0, 0, 0, (APTR)0);
  85.      MaddNodes(nodes);
  86. MaddItem(  NM_ITEM, "Quiet Node",0, 0, 0, (APTR)0);
  87.      MaddNodes(nodes);
  88. MaddItem(  NM_ITEM, "Config Node",0, 0, 0, (APTR)0);
  89.      MaddNodes(nodes);
  90. MaddItem(  NM_ITEM, "Node Chat",0, 0, 0, (APTR)0);
  91.      MaddNodes(nodes);
  92. MaddItem( NM_ITEM,"Set NRAMS",0,0,0,(APTR)0);
  93.      MaddNodes(nodes);
  94.  
  95.      MaddItem( NM_TITLE, "Custom Control",0,0,0,(APTR)0);
  96.      TX(0)
  97.      {
  98.        BM[nm++]=bt;MaddItem(  NM_ITEM, (STRPTR)&Buttons[0].Text,0, 0, 0, (APTR)0);
  99.      }bt++;
  100.      PX(bt-1)
  101.      {
  102.       MaddNodes(nodes);
  103.      }
  104.      TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  105.      PX(bt-1)
  106.      {
  107.       MaddNodes(nodes);
  108.      }
  109.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  110.         PX(bt-1)
  111.      {
  112.        MaddNodes(nodes);
  113.      }
  114.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  115.         PX(bt-1)
  116.      {
  117.        MaddNodes(nodes);
  118.      }
  119.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  120.         PX(bt-1)
  121.      {
  122.        MaddNodes(nodes);
  123.      }
  124.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  125.         PX(bt-1)
  126.      {
  127.        MaddNodes(nodes);
  128.      }
  129.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  130.         PX(bt-1)
  131.      {
  132.        MaddNodes(nodes);
  133.      }
  134.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  135.         PX(bt-1)
  136.      {
  137.       MaddNodes(nodes);
  138.      }
  139.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  140.         PX(bt-1)
  141.      {
  142.       MaddNodes(nodes);
  143.      }
  144.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  145.         PX(bt-1)
  146.      {
  147.       MaddNodes(nodes);
  148.      }
  149.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  150.         PX(bt-1)
  151.      {
  152.       MaddNodes(nodes);
  153.      }
  154.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  155.         PX(bt-1)
  156.      {
  157.       MaddNodes(nodes);
  158.      }
  159.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  160.         PX(bt-1)
  161.      {
  162.       MaddNodes(nodes);
  163.      }
  164.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  165.         PX(bt-1)
  166.      {
  167.      MaddNodes(nodes); 
  168.      }
  169.     TX(bt){ BM[nm++]=bt; MaddItem(  NM_ITEM, (STRPTR)&Buttons[bt].Text,0, 0, 0, (APTR)0);}bt++;
  170.         PX(bt-1)
  171.      {
  172.       MaddNodes(nodes);
  173.      }
  174.  
  175.  
  176.     MaddItem(   NM_END, 0, 0 , 0, 0, (APTR)0);
  177.  }
  178. }
  179. void MaddNodes(int nodes)
  180. {
  181.    char temp[100];
  182.    register int i;
  183.    for(i=0;i<=nodes;i++)
  184.    {
  185.      sprintf(temp,"Node %c",'0'+i);
  186.      MaddItem( NM_SUB,temp,0,0,0,(APTR)0);
  187.    }
  188. }
  189. void MaddItem(UBYTE Type,char *Label,char *CommKey,UWORD Flags,LONG Mutual,APTR User)
  190. {
  191.    static int i=0;
  192.    struct NewMenu *t;
  193.    char temp[200];
  194.    char *s;
  195.    if(menuset==1)
  196.    {
  197.      EWinMenu=(struct NewMenu *)AllocMem((LONG)sizeof(struct NewMenu)*(LONG)i,MEMF_PUBLIC|MEMF_CLEAR);
  198.      menuset=-1;
  199.      i=0;
  200.    }
  201.    if(menuset==-1)
  202.    {
  203.      t=EWinMenu+i;
  204.      t->nm_Type=Type;
  205.        s=AllocMem(80L,MEMF_PUBLIC|MEMF_CLEAR);
  206.        if(Label!=NULL)
  207.        strcpy(s,Label);else strcpy(s,"");
  208.      t->nm_Label=s;
  209.      t->nm_CommKey=0;//(STRPTR)CommKey;
  210.      t->nm_Flags=Flags;
  211.      t->nm_MutualExclude=Mutual;
  212.      t->nm_UserData=0;
  213.      MaxMenus++;
  214.    }
  215.    i++;
  216. }
  217.   
  218. void MaddRem(void)
  219. {
  220.    register int i;
  221.    struct NewMenu *t;
  222.    for(i=0;i<MaxMenus;i++)
  223.    {
  224.      t=EWinMenu+i;
  225.      FreeMem(t->nm_Label,80L);
  226.    }
  227.    FreeMem(EWinMenu,(LONG)(sizeof(struct NewMenu))*(LONG)MaxMenus);
  228. }